<?php

namespace Jammiest\SwigeCore\Tools;

class Config
{
    /**
     * 获取配置值
     *
     * @param string $key 配置键名，支持点语法和路径分隔符，"app.name",或 "apps/http.middlewares"
     * @param mixed $default 默认值
     * @return mixed
     */
    public static function get(string $key, $default = null)
    {
        static $configurations = [];
        
        // 解析键名，支持两种格式：
        // 1. config('app.name') - 点语法
        // 2. config('apps/http.middlewares') - 路径语法
        $keyParts = strpos($key, '/') !== false 
            ? explode('/', $key)
            : explode('.', $key);
        
        $fileKey = array_shift($keyParts);
        $filePath = Path::getBasePath("config/{$fileKey}.php");
        // 如果配置未加载，则加载配置文件
        if (!isset($configurations[$fileKey])) {
            if (!file_exists($filePath)) {
                return $default;
            }
            
            $configurations[$fileKey] = require $filePath;
        }
        
        // 遍历获取配置值
        $value = $configurations[$fileKey];
        foreach ($keyParts as $part) {
            if (!is_array($value) || !array_key_exists($part, $value)) {
                return $default;
            }
            $value = $value[$part];
        }
        
        return $value;
    }




}
